import * as echarts from 'echarts'

// 获取基础配置
export const getBaseOption = () => {
  return {
    title: {
      text: '天-空-地一体化监测平台',
      subtext: '植被健康度与病虫害分布',
      left: 'center',
      textStyle: {
        color: '#333',
        fontSize: 18
      }
    },
    tooltip: {
      trigger: 'item',
      formatter: function (params) {
        if (params.componentType === 'series') {
          let content = `<div style="font-weight: bold; margin-bottom: 5px;">${params.seriesName}</div>`
          if (params.data.value) {
            content += `位置: ${params.data.value[0].toFixed(6)}, ${params.data.value[1].toFixed(6)}<br/>`
            if (params.data.value[2] !== undefined) {
              content += `数值: ${params.data.value[2].toFixed(3)}`
            }
            // 添加植被状态说明
            if (params.seriesName === '卫星数据') {
              const ndvi = params.data.value[2]
              let status = ''
              if (ndvi > 0.6) status = '植被健康'
              else if (ndvi > 0.3) status = '植被一般'
              else status = '植被较差'
              content += `<br/>状态: ${status}`
            }
          }
          return content
        }
        return params.name
      }
    },
    legend: {
      orient: 'vertical',
      right: 10,
      top: 'center',
      textStyle: {
        fontSize: 12
      }
    },
    xAxis: {
      type: 'value',
      name: '经度',
      min: 115,
      max: 125,
      nameTextStyle: {
        fontSize: 12
      }
    },
    yAxis: {
      type: 'value',
      name: '纬度',
      min: 25,
      max: 35,
      nameTextStyle: {
        fontSize: 12
      }
    },
    grid: {
      left: '3%',
      right: '12%',
      bottom: '3%',
      containLabel: true
    },
    series: []
  }
}

// 根据NDVI值获取颜色
function getNdviColor(ndvi) {
  if (ndvi > 0.6) return '#52c41a'  // 绿色 - 健康
  else if (ndvi > 0.3) return '#faad14' // 黄色 - 一般
  else return '#f5222d' // 红色 - 较差
}

// 根据虫情密度获取颜色
function getPestDensityColor(density) {
  if (density < 0.3) return '#1890ff'  // 蓝色 - 低密度
  else if (density < 0.7) return '#faad14' // 黄色 - 中密度
  else return '#f5222d' // 红色 - 高密度
}

// @/utils/simpleMap.js
export function createMockData() {
  // 模拟卫星数据 (NDVI植被指数)
  const satelliteData = Array.from({ length: 15 }, (_, i) => ({
    name: `卫星点${i + 1}`,
    value: [
      116.3 + Math.random() * 0.5, // 经度
      39.8 + Math.random() * 0.3,  // 纬度
      Math.random().toFixed(2)     // NDVI值，确保存在
    ]
  }));

  // 模拟无人机数据 (虫情密度)
  const droneData = Array.from({ length: 20 }, (_, i) => ({
    name: `无人机网格${i + 1}`,
    value: [
      116.2 + Math.random() * 0.6,
      39.7 + Math.random() * 0.4,
      Math.random().toFixed(2)     // 虫情密度，确保存在
    ]
  }));

  // 模拟地面识别数据
  const groundData = Array.from({ length: 25 }, (_, i) => ({
    name: `识别点${i + 1}`,
    value: [
      116.25 + Math.random() * 0.7,
      39.75 + Math.random() * 0.5,
      1  // 存在性标识
    ],
    pestType: ['稻飞虱', '稻瘟病', '纹枯病'][Math.floor(Math.random() * 3)],
    confidence: (0.7 + Math.random() * 0.3).toFixed(2)
  }));

  return { satelliteData, droneData, groundData };
}

// 修复无人机数据系列创建函数
export function createDroneSeries(droneData) {
  // 添加数据验证
  const validData = droneData.filter(item =>
    item.value && item.value.length >= 3 && !isNaN(item.value[2])
  );

  return {
    name: '无人机数据',
    type: 'scatter',
    coordinateSystem: 'geo',
    data: validData.map(item => ({
      ...item,
      value: item.value.slice(0, 3) // 确保只取前三个元素
    })),
    symbolSize: function(val) {
      const density = val[2] || 0;
      return 8 + density * 15; // 根据密度调整大小
    },
    itemStyle: {
      color: function(params) {
        const density = params.value[2] || 0;
        if (density < 0.3) return '#1890ff'; // 低密度 - 蓝色
        if (density < 0.7) return '#faad14'; // 中密度 - 黄色
        return '#f5222d'; // 高密度 - 红色
      }
    },
    emphasis: {
      focus: 'series'
    }
  };
}

// 同样修复其他系列创建函数...
export function createSatelliteSeries(satelliteData) {
  const validData = satelliteData.filter(item =>
    item.value && item.value.length >= 3 && !isNaN(item.value[2])
  );

  return {
    name: '卫星数据',
    type: 'scatter',
    coordinateSystem: 'geo',
    data: validData,
    symbolSize: 12,
    itemStyle: {
      color: function(params) {
        const ndvi = params.value[2] || 0;
        if (ndvi > 0.6) return '#52c41a'; // 健康 - 绿色
        if (ndvi > 0.3) return '#faad14'; // 一般 - 黄色
        return '#f5222d'; // 较差 - 红色
      }
    }
  };
}

export function createGroundSeries(groundData) {
  const validData = groundData.filter(item =>
    item.value && item.value.length >= 2 // 地面数据只需要经纬度
  );

  return {
    name: '地面识别',
    type: 'scatter',
    coordinateSystem: 'geo',
    data: validData,
    symbol: 'triangle',
    symbolSize: 14,
    itemStyle: {
      color: '#722ed1' // 紫色标识
    },
    label: {
      show: true,
      formatter: function(params) {
        return params.data.pestType || '识别点';
      },
      position: 'top',
      color: '#333'
    }
  };
}
